1. Field
Embodiments of the invention relate to data layout architecture, and more specifically, to data layout architecture for storing and accessing integrity metadata.
2. Background
Data storage systems may include an array of disk drives and one or more dedicated computers and software systems to manage data. A primary concern of such data storage systems is that of data corruption and recovery. Silent data corruption occurs where the data storage system returns erroneous data and does not realize that the data is wrong. Silent data corruption may result from a glitch in the data retrieval software causing the system software to read from, or write to, the wrong address, etc. Silent data corruption may also result from hardware failures such as a malfunctioning data bus or corruption of the magnetic storage media that may cause a data bit to be inverted or lost. Silent data corruption may also result from a variety other causes.
Silent data corruption is particularly problematic. For example, when an application requests data and gets the wrong data this may cause the application to crash. Additionally, the application may pass along the corrupted data to other applications. If left undetected, these errors may have disastrous consequences (e.g., irreparable undetected long-term data corruption).
The problem of detecting silent data corruption may be addressed by creating integrity metadata (data pertaining to data) for each data stripe unit. Integrity metadata may include address data to verify the location of the data stripe unit, or a checksum to verify the contents of a data stripe unit. A checksum is a numerical value derived through a mathematical computation on the data in a data stripe unit. Basically when data is stored, a numerical value is computed and associated with the stored data. When the data is subsequently read, the same computation is applied to the data. If an identical checksum results then the data is assumed to be uncorrupted.
Typically, data storage systems use an array of disk drives configured under one of redundant arrays of inexpensive disks (RAID) configurations. For example, one RAID architecture using data striping is RAID 0, in which data stripe units are striped across multiple disk drives to enable multiple read and write operations to be executed concurrently. Other types of RAID configurations have been defined and use data striping to improve performance.